package pagecode.pages.mantenimiento;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;

import javax.faces.component.html.HtmlCommandButton;
import javax.faces.component.html.HtmlCommandLink;
import javax.faces.component.html.HtmlForm;
import javax.faces.component.html.HtmlGraphicImage;
import javax.faces.component.html.HtmlInputText;
import javax.faces.component.html.HtmlOutputText;
import javax.faces.component.html.HtmlSelectOneMenu;
import javax.faces.context.FacesContext;
import javax.faces.model.SelectItem;

import model.ComboModel;
import model.mantenimiento.EliminarArchivoModel;

import org.apache.commons.lang.StringUtils;
import org.apache.log4j.Logger;

import pagecode.PageCodeBase;

/*import com.ibm.faces.component.html.HtmlCommandButton;
import com.ibm.faces.component.html.HtmlGraphicImage;
import com.ibm.faces.component.html.HtmlScriptCollector;*/
import com.stefanini.pe.bbva.mbl.carga.in.to.ControlEliminar;
import com.stefanini.pe.bbva.mbl.carga.in.to.EliminarDetalle;
import com.stefanini.pe.bbva.mbl.carga.in.to.EstadoFormulario;
import com.stefanini.pe.bbva.mbl.carga.in.to.UsuarioSesion;
import com.stefanini.pe.bbva.mbl.in.utils.Constantes;
import com.stefanini.pe.bbva.mbl.in.utils.Util;

public class EliminarArchivosDetalleBean extends PageCodeBase {

    private static Logger logger = Logger.getLogger(EliminarArchivosDetalleBean.class);

    protected EliminarArchivoModel eliminarArchivoModel;

    protected List comboFamProducto;

    protected String seleccionFamProducto;
	//protected HtmlScriptCollector scriptCollector1;
	protected HtmlForm form1;
	protected HtmlGraphicImage image2;
	protected HtmlOutputText lblUsuario1;
	protected HtmlOutputText lblUsuario;
	protected HtmlOutputText lblFechaPrincipal;
	protected HtmlCommandLink lnkCerrarSession;
	protected HtmlOutputText lblCerrarSesion;
	protected HtmlOutputText lblTitulo;
	//protected HtmlScriptCollector scriptCollector2;
	protected HtmlOutputText lblCampo1Det;
	protected HtmlInputText txtCampo1;
	protected HtmlOutputText lblCampo2;
	protected HtmlOutputText lblCampo3;
	protected HtmlInputText txtCampo3;
	protected HtmlCommandButton btnGuardar;
	protected HtmlOutputText lblError;
	protected HtmlCommandLink lnkRegresar;
	protected HtmlOutputText txthplRegresar;
	protected HtmlCommandButton btnCancelar;

	protected HtmlOutputText lblExtension;

	protected HtmlInputText txtExtension;

	protected ComboModel comboModel;

	protected HtmlSelectOneMenu menuExito1;

	protected HtmlOutputText lblDir;

	protected HtmlSelectOneMenu cbDir;

	protected HtmlSelectOneMenu cbCampo2;

     public EliminarArchivoModel getEliminarArchivoModel() {
    	 if (eliminarArchivoModel == null) {
    		 eliminarArchivoModel = (EliminarArchivoModel) getFacesContext().getApplication()
                     .createValueBinding("#{eliminarArchivoModel}").getValue(getFacesContext());
         }
    	 
		return eliminarArchivoModel;
	}

	public void setEliminarArchivoModel(EliminarArchivoModel eliminarArchivoModel) {
		this.eliminarArchivoModel = eliminarArchivoModel;
	}

	/**
     * @param txtCodigoHostDet
     *            The txtCodigoHostDet to set.
     */
    public void setTxtCodigoHostDet(HtmlInputText txtCodigoHostDet) {
        this.txtCampo1 = txtCodigoHostDet;
    }

    /**
     * @param txthplRegresar
     *            The txthplRegresar to set.
     */
    public void setTxthplRegresar(HtmlOutputText txthplRegresar) {
        this.txthplRegresar = txthplRegresar;
    }

    /**
     * @param txtNombreLargoDet
     *            The txtNombreLargoDet to set.
     */
    public void setTxtNombreLargoDet(HtmlInputText txtNombreLargoDet) {
        this.txtCampo3 = txtNombreLargoDet;
    }

    public void onPageLoadEnd(FacesContext facescontext) {
    	logger.info("Inicio");
    	
        if (!this.isPostBack()) {
        }
        
        logger.info("Fin");
    }

    private boolean isPostBack() {
    	logger.info("Inicio");
    	
        if (this.getFacesContext().getExternalContext()
                .getRequestParameterMap().get("isPostBackProductoDet") == null) {
        	logger.info("Fin");
        	
            return false;
        } else {
        	logger.info("Fin");
        	
            return true;
        }
    }

    public void onPageLoadBegin(FacesContext facescontext) {
    	
    }

    /**
     * @return Returns the comboFamProducto.
     */
    public List getComboFamProducto() {
        return comboFamProducto;
    }

    /**
     * @param comboFamProducto
     *            The comboFamProducto to set.
     */
    public void setComboFamProducto(List comboFamProducto) {
        this.comboFamProducto = comboFamProducto;
    }

    //	PostBack

    public String doBtnNuevoAction() {
    	logger.info("Inicio");
    	logger.info("Fin");
    	
        return "";
    }

    public String doBtnAbrirAction() {
    	logger.info("Inicio");
    	logger.info("Fin");
    	
        return "";
    }
    
    private ArrayList setearDirectorioDescripcion(BigDecimal b){
		ArrayList arrl=new ArrayList();
		arrl=(ArrayList)this.getEliminarArchivoModel().getEliminarDetalleService().selectByControl(b);
		List lst=new ArrayList();
		lst =		this.getComboModel().getListaDirectorio();
		for(int i=0;i<arrl.size();i++){
			EliminarDetalle ed=(EliminarDetalle)arrl.get(i);
			
			for(int y=0;y<lst.size();y++){
				SelectItem c=(SelectItem)lst.get(y);
				if(ed.getDirectorio()!=null && ed.getDirectorio().equals(c.getValue())){
					ed.setDirectorioDes(c.getLabel());						
				}
			}
		}
		
		return arrl;
	}

    public String doBtnGuardarAction() {
    	EliminarDetalle eliminarDetalle = null;
    	
        try {
        	logger.info("Inicio");
        	
            UsuarioSesion oUsuarioSesion = new UsuarioSesion();
            oUsuarioSesion = (UsuarioSesion) this.getSession(true)
                    .getAttribute(Constantes.USUARIO_SESSION);
            
            eliminarDetalle = this.getEliminarArchivoModel().getEliminarDetalle();
            
            if(!validar(eliminarDetalle)) {
            	logger.info("Fin");
            	
            	return "";
            }
            
            if (this.getEliminarArchivoModel().getEstadoFormularioDet().getEstadoActual() == EstadoFormulario.NUEVO) {
            	eliminarDetalle = this.getEliminarArchivoModel().getEliminarDetalle(); 
                ControlEliminar controlEliminar = this.getEliminarArchivoModel().getControlTemporal();	
                eliminarDetalle.setIdControlEliminar(controlEliminar.getIdControlEliminar());
                
                if("".equals(eliminarDetalle.getDirectorio())){
                	
                	this.getEliminarArchivoModel().setLblError_Text("Usted debe ingresar un Directorio");
                	logger.info("Fin");
                	
                	return "";
                }
                
                
                if(StringUtils.isEmpty(eliminarDetalle.getCampo2())){
                	eliminarDetalle.setCampo2(null);
                }
                if(eliminarDetalle.getCampo1()!=null){
                	if(StringUtils.isEmpty(eliminarDetalle.getCampo1().trim())){
                		eliminarDetalle.setCampo1(Constantes.ESPACIO_BLANCO);
                	}
                }
                if(eliminarDetalle.getCampo3()!=null){
                	if(StringUtils.isEmpty(eliminarDetalle.getCampo3().trim())){
                		eliminarDetalle.setCampo3(Constantes.ESPACIO_BLANCO);
                	}
                }
                
                if(eliminarDetalle.getCampo1() != null){
                	eliminarDetalle.setCampo1(eliminarDetalle.getCampo1().trim());
                }
                
                if(eliminarDetalle.getCampo3() != null){
                	eliminarDetalle.setCampo3(eliminarDetalle.getCampo3().trim());
                }
                
                this.getEliminarArchivoModel().getEliminarDetalleService().insert(eliminarDetalle);
                this.getEliminarArchivoModel().getEstadoFormularioDet().setEstadoActual(
                        EstadoFormulario.GUARDAR);
                //this.getEliminarArchivoModel().setListaControlEliminarDetalle((ArrayList)this.getEliminarArchivoModel().getEliminarDetalleService().selectByControl(eliminarDetalle.getIdControlEliminar()));
                this.getEliminarArchivoModel().setListaControlEliminarDetalle(setearDirectorioDescripcion(eliminarDetalle.getIdControlEliminar()));
                
            } else {
            	eliminarDetalle = this.getEliminarArchivoModel().getEliminarDetalle();
            	
            	 if("".equals(eliminarDetalle.getDirectorio())){
                 	
            		 this.getEliminarArchivoModel().setLblError_Text("Usted debe ingresar un Directorio");	
                 	return "";
                 }
            	
            	if(StringUtils.isEmpty(eliminarDetalle.getCampo2())){
                	eliminarDetalle.setCampo2(null);
                }
                if(eliminarDetalle.getCampo1()!=null){
                	if(StringUtils.isEmpty(eliminarDetalle.getCampo1().trim())){
                		eliminarDetalle.setCampo1(Constantes.ESPACIO_BLANCO);
                	}
                }
                if(eliminarDetalle.getCampo3()!=null){
                	if(StringUtils.isEmpty(eliminarDetalle.getCampo3().trim())){                		
                		eliminarDetalle.setCampo3(Constantes.ESPACIO_BLANCO);
                	}
                }
                
                if(eliminarDetalle.getCampo1() != null){
                	eliminarDetalle.setCampo1(eliminarDetalle.getCampo1().trim());
                }
                
                if(eliminarDetalle.getCampo3() != null){
                	eliminarDetalle.setCampo3(eliminarDetalle.getCampo3().trim());
                }
                
                this.getEliminarArchivoModel().getEliminarDetalleService().updateByPrimaryKey(eliminarDetalle);
                this.getEliminarArchivoModel().getEstadoFormularioDet().setEstadoActual(EstadoFormulario.GUARDAR);
    			
    			this.getEliminarArchivoModel().setListaControlEliminarDetalle(setearDirectorioDescripcion(eliminarDetalle.getIdControlEliminar()));
    			
            }
            this.getEliminarArchivoModel().setStrTitulo("CONTROL ELIMINAR");
            this.getEliminarArchivoModel().setBooDetalleVisible(true);
            
            logger.info("Fin");
            
            return "guardar";
        } catch (Exception e) {
        	logger.error(e.getMessage(), e);
        	addMessagesError(Constantes.MSJ_ERROR_INESPERADO);
        }
        
        logger.info("Fin");
        
        return "";
    }
    
    private boolean validar(EliminarDetalle eliminarDetalle) {
    	boolean resp = true;
    	String directorio = null;
    	String fecha = null;
    	String extension = null;
    	
    	// Directorio
    	directorio = eliminarDetalle.getDirectorio();
    	
    	if(directorio != null) {
    		if(directorio.equals("")) {
    			resp = false;    		
        		addMessagesError("* Ingrese el campo Directorio");
    		}
    	} else {
    		resp = false;
    		addMessagesError("* Ingrese el campo Directorio");
    	}
    	
    	// Fecha
    	fecha = eliminarDetalle.getCampo2();
    	
    	if(fecha != null) {
    		if(fecha.equals("")) {
    			resp = false;    		
        		addMessagesError("* Ingrese el campo Fecha");
    		}
    	} else {
    		resp = false;
    		addMessagesError("* Ingrese el campo Fecha");
    	}
    	
    	// Extension
    	extension = eliminarDetalle.getExtension();
    	
    	if(extension != null) {
    		if(extension.trim().equals("")) {
    			resp = false;    		
        		addMessagesError("* Ingrese el campo Extension");
    		} else {
    			if(extension.trim().length() < 3) {
    				resp = false;    		
            		addMessagesError("* El campo Extension debe ser de 3 caracteres");
    			}
    		}
    	} else {
    		resp = false;
    		addMessagesError("* Ingrese el campo Extension");
    	}
    	
    	return resp;
    }

    public String doBtnBuscarAction() {
    	logger.info("Inicio");
    	logger.info("Fin");

        return "";
    }

    public String doBtnExportarExcelAction() {
    	logger.info("Inicio");
    	logger.info("Fin");
    	
        return "";
    }

    public String doBtnExportarPDFAction() {
    	logger.info("Inicio");
    	logger.info("Fin");
    	
        return "";
    }

    public String doBtnCancelarAction() {
        try {
        	logger.info("Inicio");        	
           
        	this.getEliminarArchivoModel().setBooDetalleVisible(true);
        	
        	EliminarDetalle eliminarDetalleAux = (EliminarDetalle)getSession(true).getAttribute("objEliminarArchivoAux");
        	this.getEliminarArchivoModel().setEliminarDetalle(eliminarDetalleAux);
        	
        	List<EliminarDetalle> listaArchivos = getEliminarArchivoModel().getListaControlEliminarDetalle();
        	for(EliminarDetalle archivo : listaArchivos){
        		if(archivo.getCampo1().equals(eliminarDetalleAux.getCampo1())){
        			archivo.setDirectorio(eliminarDetalleAux.getDirectorio());
        			archivo.setCampo1(eliminarDetalleAux.getCampo1());
        			archivo.setCampo2(eliminarDetalleAux.getCampo2());
        			archivo.setCampo3(eliminarDetalleAux.getCampo3());
        			archivo.setExtension(eliminarDetalleAux.getExtension());
        		}
        	}
        	
        	
        	logger.info("Fin");
        	
            return "cancelar";
        } catch (Exception e) {            
        	logger.error(e.getMessage(), e);
        }
        
        logger.info("Fin");
        
        return "";
    }
    
    public String handleCbxTipoProductoValueChange(){
    	return "";
    }
    /**
     * @return Returns the seleccionFamProducto.
     */
    public String getSeleccionFamProducto() {
        return seleccionFamProducto;
    }

    /**
     * @param seleccionFamProducto
     *            The seleccionFamProducto to set.
     */
    public void setSeleccionFamProducto(String seleccionFamProducto) {
        this.seleccionFamProducto = seleccionFamProducto;
    }

    /**
     * @param btnCancelar
     *            The btnCancelar to set.
     */
    public void setBtnCancelar(HtmlCommandButton btnCancelar) {
        this.btnCancelar = btnCancelar;
    }

    /**
     * @param btnGuardar
     *            The btnGuardar to set.
     */
    public void setBtnGuardar(HtmlCommandButton btnGuardar) {
        this.btnGuardar = btnGuardar;
    }
   

	/*protected HtmlScriptCollector getScriptCollector1() {
		logger.info("Inicio");   
		
		if (scriptCollector1 == null) {
			scriptCollector1 = (HtmlScriptCollector) findComponentInRoot("scriptCollector1");
		}
		
		logger.info("Fin");   
		
		return scriptCollector1;
	}*/
	protected HtmlForm getForm1() {
		logger.info("Inicio");   
		
		if (form1 == null) {
			form1 = (HtmlForm) findComponentInRoot("form1");
		}
		
		logger.info("Fin");   
		
		return form1;
	}
	protected HtmlGraphicImage getImage2() {
		logger.info("Inicio");   
		
		if (image2 == null) {
			image2 = (HtmlGraphicImage) findComponentInRoot("image2");
		}
		
		logger.info("Fin");   
		
		return image2;
	}
	protected HtmlOutputText getLblUsuario1() {
		logger.info("Inicio");   
		
		if (lblUsuario1 == null) {
			lblUsuario1 = (HtmlOutputText) findComponentInRoot("lblUsuario1");
		}
		
		logger.info("Fin");   
		
		return lblUsuario1;
	}
	protected HtmlOutputText getLblUsuario() {
		logger.info("Inicio");   
		
		if (lblUsuario == null) {
			lblUsuario = (HtmlOutputText) findComponentInRoot("lblUsuario");
		}
		
		logger.info("Fin");   
		
		return lblUsuario;
	}
	protected HtmlOutputText getLblFechaPrincipal() {
		logger.info("Inicio");   
		
		if (lblFechaPrincipal == null) {
			lblFechaPrincipal = (HtmlOutputText) findComponentInRoot("lblFechaPrincipal");
		}
		
		logger.info("Fin");   
		
		return lblFechaPrincipal;
	}
	protected HtmlCommandLink getLnkCerrarSession() {
		logger.info("Inicio");   
		
		if (lnkCerrarSession == null) {
			lnkCerrarSession = (HtmlCommandLink) findComponentInRoot("lnkCerrarSession");
		}
		
		logger.info("Fin");   
		
		return lnkCerrarSession;
	}
	protected HtmlOutputText getLblCerrarSesion() {
		logger.info("Inicio");   
		
		if (lblCerrarSesion == null) {
			lblCerrarSesion = (HtmlOutputText) findComponentInRoot("lblCerrarSesion");
		}
		
		logger.info("Fin");   
		
		return lblCerrarSesion;
	}
	protected HtmlOutputText getLblTitulo() {
		logger.info("Inicio");   
		
		if (lblTitulo == null) {
			lblTitulo = (HtmlOutputText) findComponentInRoot("lblTitulo");
		}
		
		logger.info("Fin");   
		
		return lblTitulo;
	}
	/*protected HtmlScriptCollector getScriptCollector2() {
		logger.info("Inicio");   
		
		if (scriptCollector2 == null) {
			scriptCollector2 = (HtmlScriptCollector) findComponentInRoot("scriptCollector2");
		}
		
		logger.info("Fin");   
		
		return scriptCollector2;
	}*/
	protected HtmlOutputText getLblCampo1Det() {
		logger.info("Inicio");   
		
		if (lblCampo1Det == null) {
			lblCampo1Det = (HtmlOutputText) findComponentInRoot("lblCampo1Det");
		}
		
		logger.info("Fin");   
		
		return lblCampo1Det;
	}
	protected HtmlInputText getTxtCampo1() {
		logger.info("Inicio");   
		
		if (txtCampo1 == null) {
			txtCampo1 = (HtmlInputText) findComponentInRoot("txtCampo1");
		}
		
		logger.info("Fin");   
		
		return txtCampo1;
	}
	protected HtmlOutputText getLblCampo2() {
		logger.info("Inicio");   
		
		if (lblCampo2 == null) {
			lblCampo2 = (HtmlOutputText) findComponentInRoot("lblCampo2");
		}
		
		logger.info("Fin");   
		
		return lblCampo2;
	}
	protected HtmlOutputText getLblCampo3() {
		logger.info("Inicio");   
		
		if (lblCampo3 == null) {
			lblCampo3 = (HtmlOutputText) findComponentInRoot("lblCampo3");
		}
		
		logger.info("Fin");   
		
		return lblCampo3;
	}
	protected HtmlInputText getTxtCampo3() {
		logger.info("Inicio");   
		
		if (txtCampo3 == null) {
			txtCampo3 = (HtmlInputText) findComponentInRoot("txtCampo3");
		}
		
		logger.info("Fin");   
		
		return txtCampo3;
	}
	protected HtmlCommandButton getBtnGuardar() {
		logger.info("Inicio");   
		
		if (btnGuardar == null) {
			btnGuardar = (HtmlCommandButton) findComponentInRoot("btnGuardar");
		}
		
		logger.info("Fin");   
		
		return btnGuardar;
	}
	protected HtmlOutputText getLblError() {
		logger.info("Inicio");   
		
		if (lblError == null) {
			lblError = (HtmlOutputText) findComponentInRoot("lblError");
		}
		
		logger.info("Fin");   
		
		return lblError;
	}
	protected HtmlCommandLink getLnkRegresar() {
		logger.info("Inicio");   
		
		if (lnkRegresar == null) {
			lnkRegresar = (HtmlCommandLink) findComponentInRoot("lnkRegresar");
		}
		
		logger.info("Fin");   
		
		return lnkRegresar;
	}
	protected HtmlOutputText getTxthplRegresar() {
		logger.info("Inicio");   
		
		if (txthplRegresar == null) {
			txthplRegresar = (HtmlOutputText) findComponentInRoot("txthplRegresar");
		}
		
		logger.info("Fin");   
		
		return txthplRegresar;
	}
	protected HtmlCommandButton getBtnCancelar() {
		logger.info("Inicio");   
		
		if (btnCancelar == null) {
			btnCancelar = (HtmlCommandButton) findComponentInRoot("btnCancelar");
		}
		
		logger.info("Fin");   
		
		return btnCancelar;
	}

	protected HtmlOutputText getLblExtension() {
		logger.info("Inicio");   
		
		if (lblExtension == null) {
			lblExtension = (HtmlOutputText) findComponentInRoot("lblExtension");
		}
		
		logger.info("Fin");   
		
		return lblExtension;
	}

	protected HtmlInputText getTxtExtension() {
		logger.info("Inicio");   
		
		if (txtExtension == null) {
			txtExtension = (HtmlInputText) findComponentInRoot("txtExtension");
		}
		
		logger.info("Fin");   
		
		return txtExtension;
	}

    public ComboModel getComboModel() {
        if (comboModel == null) {
            comboModel = (ComboModel) getFacesContext().getApplication()
                    .createValueBinding("#{comboModel}").getValue(
                            getFacesContext());
        }
        
        return comboModel;
    }

    public void setComboModel(ComboModel comboModel) {
        this.comboModel = comboModel;
    }

	protected HtmlSelectOneMenu getMenuExito1() {
		logger.info("Inicio");   
		
		if (menuExito1 == null) {
			menuExito1 = (HtmlSelectOneMenu) findComponentInRoot("menuExito1");
		}
		
		logger.info("Fin");   
		
		return menuExito1;
	}

	protected HtmlOutputText getLblDir() {
		logger.info("Inicio");   
		
		if (lblDir == null) {
			lblDir = (HtmlOutputText) findComponentInRoot("lblDir");
		}
		
		logger.info("Fin");   
		
		return lblDir;
	}

	protected HtmlSelectOneMenu getCbDir() {
		logger.info("Inicio");   
		
		if (cbDir == null) {
			cbDir = (HtmlSelectOneMenu) findComponentInRoot("cbDir");
		}
		
		logger.info("Fin");   
		
		return cbDir;
	}

	protected HtmlSelectOneMenu getCbCampo2() {
		logger.info("Inicio");   
		
		if (cbCampo2 == null) {
			cbCampo2 = (HtmlSelectOneMenu) findComponentInRoot("cbCampo2");
		}
		
		logger.info("Fin");   
		
		return cbCampo2;
	}
}